'''
# 赋值: 在对字典 列表  元组等数据进行赋值时,本质上是对数据对象的引用
list1 = [12,34,5,78,2]
list2 = list1
list1[2] = "hehe"
# 当修改了其中的一个列表的元素的某个值时,另外一个列表的元素的值也会同时修改,
# 本质上两个列表指向的是一个数据源
print(list1,list2)  # [12, 34, 'hehe', 78, 2] [12, 34, 'hehe', 78, 2]

'''
# 浅拷贝:在拷贝一维列表的时候, 前后两个列表是独立的,互不干扰,当修改了其中一个列表的
# 元素的时候,另外一个不受影响.
'''
import copy
list3 = [12,3,5,7,90]  # 一维列表
list4 = list3.copy()
list3[1] = "李晨"
print(list3,list4)  # [12, '李晨', 5, 7, 90] [12, 3, 5, 7, 90]

'''
'''
# 注意: 浅拷贝在拷贝二维列表的时候,只能拷贝最外层列表,不能拷贝父对象中的子对象,
# 当修改子对象的值的时候,新拷贝的对象的值也会发生变化.
import copy
a = [32,34,73,21,["3.45",45.43,32],37]
b = a.copy()
a[4][1] = 999  
print(a,b) # [32, 34, 73, 21, ['3.45', 999, 32], 37] [32, 34, 73, 21, ['3.45', 999, 32], 37]
'''

# 如何解决浅拷贝在处理二维列表时的问题呢? 使用深拷贝解决
import copy

c = [32, 34, 73, 21, ["3.45", 45.43, 32], 37]
d = copy.deepcopy(c)
c[4][1] = 999
print(c, d)
